package tech.waterism.dto;

import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.Date;

@Data
@ApiModel(value = "统计数据")
public class StatisticsInfoDto {
    @ApiModelProperty("统计开始时间")
    private Date dtBeg;

    @ApiModelProperty("统计结束时间")
    private Date dtEnd;

    @ApiModelProperty("洪量误差")
    private Double relativeErrorOfSumQ;

    @ApiModelProperty("绝对洪量误差")
    private Double absoluteErrorOfSumQ;

    @ApiModelProperty("洪峰误差")
    private Double relativeErrorOfPeak;

    @ApiModelProperty("绝对洪峰误差")
    private Double absoluteErrorOfPeak;

    @ApiModelProperty("峰现时间误差")
    private Integer absoluteErrorOfPeakTime;

    @ApiModelProperty("纳什系数")
    private Double nashCoeff;

    @ApiModelProperty("洪量")
    private Double sumQFore;

    @ApiModelProperty("扣除限值的洪量")
    private Double sumQForeMinusQLowerLimit;

    @ApiModelProperty("洪峰")
    private Double peakQFore;

    @ApiModelProperty("峰现时间下标")
    private Integer peakTimeQForeIndex;

    @ApiModelProperty("峰现时间")
    private Date peakTimeQFore;

    @ApiModelProperty("洪峰")
    private Double peakQReal;

    @ApiModelProperty("峰现时间下标")
    private Integer peakTimeQRealIndex;

    @ApiModelProperty("峰现时间")
    private Date peakTimeQReal;

    @ApiModelProperty("洪量")
    private Double sumQReal;

    @ApiModelProperty("最大1日洪量")
    private Double maxQForeOneDay;

    @JsonIgnore
    @ApiModelProperty("最大1日洪量时间段")
    private DateInterval maxQForeOneDayInterval;

    @ApiModelProperty("最大3日洪量")
    private Double maxQForeThreeDays;

    @JsonIgnore
    @ApiModelProperty("最大3日洪量时间段")
    private DateInterval maxQForeThreeDaysInterval;

    @ApiModelProperty("最大5日洪量")
    private Double maxQForeFiveDays;

    @ApiModelProperty("最大7日洪量")
    private Double maxQForeSevenDays;
    @JsonIgnore
    @ApiModelProperty("最大7日洪量时间段")
    private DateInterval maxQForeSevenDaysInterval;

    @ApiModelProperty("最大15日洪量")
    private Double maxQForeFifteenDays;

    @JsonIgnore
    @ApiModelProperty("最大15日洪量时间段")
    private DateInterval maxQForeFifteenDaysInterval;

    @ApiModelProperty("时段步长")
    private Integer step;

    @ApiModelProperty("时段")
    private String stepUnit;

    @ApiModelProperty("统计时段数")
    private Integer periods;

    @ApiModelProperty("入流总量")
    private Double sumQIn;

    @ApiModelProperty("起始水位（水库）")
    private Double rzBeg;

    @ApiModelProperty("结束水位（水库）")
    private Double rzEnd;

    @ApiModelProperty("预见期预报洪量")
    private Double predictionForecastSum;

    @ApiModelProperty("预见期预报洪峰")
    private Double predictionForecastPeak;

    @ApiModelProperty("预见期预报峰现时间")
    private Date predictionForecastPeakTime;

    @Schema(description = "预热期实测洪量")
    private Double preheatRealtimeSum;

    @Schema(description = "预热期预报洪量")
    private Double preheatForecastSum;

    @Schema(description = "预见期平均流量")
    private Double predictionForecastAvg;
}
